#ifndef CLIENTCOMMANDS_H
#define CLIENTCOMMANDS_H

#include <string>
#include "FileSyncHandler.h"
#include "const.h"
#include "DeltaHandler.h"

class ClientCommand {
protected:
	std::string params;
public:
	ClientCommand(){}
	virtual ~ClientCommand(){}
	virtual void execute(FileSyncHandler& fSyncHandler, Comunicador& comu) = 0;
	void parametros(std::string p);
};

class NewFileCommand: public ClientCommand{
public:
	virtual void execute(FileSyncHandler& fSyncHandler, Comunicador& comu);
};

class UpdateFileCommand: public ClientCommand{
public:
	virtual void execute(FileSyncHandler& fSyncHandler, Comunicador& comu);
};

class ErasedFileCommand: public ClientCommand{
public:
	virtual void execute(FileSyncHandler& fSyncHandler, Comunicador& comu);
};

class UpdatedFileCommand: public ClientCommand{
public:
	virtual void execute(FileSyncHandler& fSyncHandler, Comunicador& comu);
};

class UploadFileCommand: public ClientCommand{
public:
	virtual void execute(FileSyncHandler& fSyncHandler, Comunicador& comu);
};

class EraseFileCommand: public ClientCommand{
public:
	virtual void execute(FileSyncHandler& fSyncHandler, Comunicador& comu);
};

#endif
